import random
from actors.character_config import CHARACTER_CONFIGS
from typing import List


class CharacterContextManager:
    def __init__(self, character_name: str):
        self.profile = CHARACTER_CONFIGS[character_name]
        self.name = character_name
        self.history: List[str] = []

    def initialize_context(self):
        self.history.clear()
        self.history.append(
            f"角色设定：{self.profile.background}，性格：{self.profile.personality}，语气风格：{self.profile.speaking_style}，当前情绪：{self.profile.emotion}")

    def build_prompt(self, phase: str) -> str:
        context = "\n".join(self.history[-3:])  # 取最近3轮上下文
        prompt = (
            f"当前剧情阶段：{phase}。\n"
            f"{self.name}，请根据设定继续对话。\n"
            f"人物背景：{self.profile.background}。\n"
            f"性格特点：{self.profile.personality}。\n"
            f"语气风格：{self.profile.speaking_style}。\n"
            f"当前情绪：{self.profile.emotion}。\n"
            f"历史对话摘要：{context}\n"
            f"{self.name}："
        )
        return prompt

    async def generate_response(self, prompt: str) -> str:
        # 模拟异步调用语言模型（此处使用固定返回）
        # 实际应调用 deepseek-chat 接口
        simulated_lines = {
            "艾琳": ["星图计算完成，航向已确认。", "在你出现前，我已经习惯独处。", "逻辑上我们确实应该对话。"],
            "诺亚": ["你是不是隐藏了什么？", "命运让我们相遇，不是偶然。", "我不相信平静只是巧合。"]
        }
        return random.choice(simulated_lines[self.name])

    def update_context(self, response: str):
        self.history.append(f"{self.name}：{response}")
